<!doctype html>
<html lang="en">
	<head>
		<title>JavaScript Patterns</title>
		<meta charset="utf-8">
	</head>
	<body>
		<script>
			/* Title: Hoisting
			 * Description: var statements anywhere in a function act as if the variables were declared at the top of the function
			 */

			// antipattern
			myname = "global"; // global variable
			function func() {
				alert(myname); // "undefined"
				var myname = "local";
				alert(myname); // "local"
			}
			func();

			// the preceding code snippet will behave as if it were implemented like so:
			myname = "global"; // global variable
			function func() {
				var myname; // same as -> var myname = undefined;
				alert(myname); // "undefined"
				myname = "local";
				alert(myname); // "local"
			}
			func();


			// References
			// http://net.tutsplus.com/tutorials/javascript-ajax/the-essentials-of-writing-high-quality-javascript/
		</script>
	</body>
</html>